﻿using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Controls.Ribbon;
using AIPASoft.Interfaces.Security;

namespace AIPASoft.Interfaces.BusinessDomain
{
    public delegate void LoadDomains();

    public delegate void UnLoadDomains();

    public delegate void UserLoggedIn(IUserRealm userRealm);
    public delegate void UserLoggedOff();
    
    
    public interface IApplicationManager
    {
        ISecurityLibrary SecurityLibraryInstance { get; set; }
        ILogProvider LogProviderInstance { get; set; }
        IDomainManager DomainManagerInstance { get; set; }

        Ribbon RibbonControl { get; set; }
        ContentControl ContentHolder { get; set; }
        List<IBusinessDomain> BusinessDomains { get; set; }

        IUserRealm CurrentUser { get; set; }
         
        void Start();
        void Finish();


        event LoadDomains LoadDomainsEvent;
        event UnLoadDomains UnLoadDomainssEvent;

        event UserLoggedIn UserLoggedInEvent;
        event UserLoggedOff UserLoggedOffEvent;
    }
}
